class Action {
	constructor(area) {
		this.area = area;
	}
	getFieldValue(name) {
		return this.area.formOper?.getFieldValue(name);
	}
	getFieldsValue(name) {
		return this.area.formOper?.getFieldsValue(name);
	}
	setFieldValue(name, value) {
		this.area.formOper?.setFieldValue(name, value);
	}
	setFieldsValue(values) {
		this.area.formOper?.setFieldsValue(values);
	}
	validateField(name) {
		return this.area.formOper?.validateField(name);
	}
	validateFields() {
		return this.area.formOper?.validateFields();
	}
	resetFields() {
		this.area.formOper?.resetFields();
	}
	scrollToField() {
		this.area.formOper?.scrollToField();
	}
	value(dd = true) {
		return new Promise(async (resolve, reject) => {
			const { nameManger, formOper } = this.area;
			let values = {};
			if (typeof dd === 'boolean') {
				try {
					if (dd) {
						// 需要校验
						values = await formOper?.validateFields();
					} else {
						// 无需校验
						values = await formOper?.getFieldsValue();
					}
				} catch (e) {
					// 捕获但不要通知，无结果即可
					// 应对react的的全局异常拦截
					return
				}
			} else if (dd && typeof dd === 'object') {
				// 使用用户提供的对象进行解析
				values = dd;
			} else {
				reject('须提供数据对象才可解析')
			}
			resolve(await nameManger.output(values));
		})
	}
}
export default Action;